#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Generic;
namespace Cephei.QL.Math.Optimization
{
     // <summary> 
	// ! - we are in r^3 sphere centred at O radius r - vertical cylinder centred at (alpha,0) radius s - Z some point in R3 - find point on intersection that is closest to Z  the intersection may be empty!
	// </summary>
    [Guid ("E69739B7-A632-4b13-A8CD-657CDA59436F"),ComVisible(true)]
	public interface ISphereCylinderOptimizer 
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        
		 Boolean FindByProjection(Double y1, Double y2, Double y3);
        
		 ISphereCylinderOptimizer FindClosest(UInt64 maxIterations, Double tolerance, Double y1, Double y2, Double y3);
        
		 Boolean IsIntersectionNonEmpty {get;}
    }

    // <summary> 
	// ! - we are in r^3 sphere centred at O radius r - vertical cylinder centred at (alpha,0) radius s - Z some point in R3 - find point on intersection that is closest to Z  the intersection may be empty! Factory
	// </summary>
   	[ComVisible(true)]
    public interface ISphereCylinderOptimizer_Factory // : Collection_Factory<ISphereCylinderOptimizer, ICell<ISphereCylinderOptimizer>>
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        
	    ISphereCylinderOptimizer Create (Double r, Double s, Double alpha, Double z1, Double z2, Double z3, Microsoft.FSharp.Core.FSharpOption<Double> zweight);
    }
}

